// lib/app/data/datasources/platform/battery_service.dart

import 'dart:async';
import 'package:battery_plus/battery_plus.dart';

class BatteryService {
  final Battery _battery = Battery();

  /// 返回一个电量百分比的流。
  /// 它会立即发出当前的电量，然后在电池状态改变时发出新的电量。
  Stream<int> getBatteryLevelStream() async* {
    // 立即发出当前电量
    yield await _battery.batteryLevel;

    // 监听电池状态变化
    await for (final _ in _battery.onBatteryStateChanged) {
      // 状态改变后，获取并发出新的电量
      yield await _battery.batteryLevel;
    }
  }

  /// 如果你只需要一次性获取电量，可以提供一个简单的方法
  Future<int> getCurrentBatteryLevel() {
    return _battery.batteryLevel;
  }
}